/**
 * Copyright (C) 2017 - 2020 https://github.com/joewee
 * <p>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.bifrost.entity;

import com.bifrost.constant.MerchantConfigurationType;

import javax.persistence.*;
import java.io.Serializable;

/**
 *
 *
 *@author joewee
 *@version 1.0.0
 *@Date 2018/2/21 15:44
 */
@Entity
@Table(name = "MERCHANT_CONFIGURATION")
@NamedQuery(name = "MerchantConfiguration.findAll", query = "SELECT m FROM MerchantConfiguration m ")
public class MerchantConfiguration extends BaseEntity implements Serializable {
    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name="CONFIG_KEY")
    private String key;

    @Column(name="VALUE")
    @Lob
    private String value;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="MERCHANT_ID", nullable=true,foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))
    private MerchantStore merchantStore;

    @Column(name="TYPE")
    @Enumerated(value = EnumType.STRING)
    private MerchantConfigurationType merchantConfigurationType = MerchantConfigurationType.INTEGRATION;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "CONFIGURATION_ALIAS_ID", nullable = true,foreignKey = @ForeignKey(name = "none", value = ConstraintMode.NO_CONSTRAINT))
    private MerchantConfigurationAlias configurationAlias;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public MerchantStore getMerchantStore() {
        return merchantStore;
    }

    public void setMerchantStore(MerchantStore merchantStore) {
        this.merchantStore = merchantStore;
    }

    public MerchantConfigurationType getMerchantConfigurationType() {
        return merchantConfigurationType;
    }

    public void setMerchantConfigurationType(MerchantConfigurationType merchantConfigurationType) {
        this.merchantConfigurationType = merchantConfigurationType;
    }

    public MerchantConfiguration() {
    }

    public MerchantConfigurationAlias getConfigurationAlias() {
        return configurationAlias;
    }

    public void setConfigurationAlias(MerchantConfigurationAlias configurationAlias) {
        this.configurationAlias = configurationAlias;
    }

    public MerchantConfiguration(MerchantConfigurationType merchantConfigurationType, MerchantConfigurationAlias configurationAlias) {
        this.merchantConfigurationType = merchantConfigurationType;
        this.configurationAlias = configurationAlias;
    }
}
